﻿using Newtonsoft.Json;
using PHMEE.Admin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Threading.Tasks;

namespace PHMEE.MqttClient.MqttBusinessCommand
{
    /// <summary>
    /// 请求采集参数
    /// </summary>
    public class CollectParaCommand : BaseCommand
    {
        private ICollectParaAppService _collectParaAppService;

        public CollectParaCommand(ICollectParaAppService collectParaAppService)
        {
            _collectParaAppService = collectParaAppService;
        }

        public override async Task ExecuteAsync(string requestInfo)
        {
            Console.WriteLine($"=====我是处理【Register业务:{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff")}】====");

            #region 模拟数据
            //await Task.Run(action: () =>
            //{
            //    isReplay = true;

            //    //CollectPara 采集参数
            //    CollectParaDto res = new CollectParaDto()
            //    {
            //        //振动
            //        VibChannelList = new List<VibChannelParaDto>() { },
            //        //工艺
            //        //TechChannelList = new List<TechChannelParaDto>() { },
            //        ////转速
            //        //SpeedChannelList = new List<SpeedChannelParaDto>() { },
            //        ////触发
            //        //TriggerList = new List<TriggerParaDto>() { },
            //    };
            //    //振动采集参数--高频加速度
            //    VibParaDto vibParaDto1 = new VibParaDto()
            //    {
            //        LowFreq = 0,
            //        HighFreq = 10000,
            //        Length = 32768,
            //        Unit = "m/s^2",
            //        PlusLength = 0,
            //        Dir = SernorStyleEnum.D,
            //        Code = VibIndexEnum.HighAccLongWave,
            //    };
            //    //振动采集参数列表
            //    List<VibParaDto> vibParaDtos = new List<VibParaDto>
            //    {
            //        vibParaDto1
            //    };
            //    //报警门限参数--速度有效值-3级门限
            //    LimitParaDto limitParaDto1 = new LimitParaDto()
            //    {
            //        Level = 3,
            //        Limit = 10,
            //        Dir = SernorStyleEnum.D,
            //        Code = LimitParaEnum.EffectiveSpeed,
            //    };
            //    //报警门限参数--速度有效值-4级门限
            //    LimitParaDto limitParaDto2 = new LimitParaDto()
            //    {
            //        Level = 4,
            //        Limit = 6,
            //        Dir = SernorStyleEnum.D,
            //        Code = LimitParaEnum.EffectiveSpeed,
            //    };
            //    //报警门限参数--加速度峰值-4级门限
            //    LimitParaDto limitParaDto3 = new LimitParaDto()
            //    {
            //        Level = 4,
            //        Limit = 1,
            //        Dir = SernorStyleEnum.D,
            //        Code = LimitParaEnum.PeakAcceleration,
            //    };
            //    //报警门限参数列表
            //    List<LimitParaDto> limitParaDtos = new List<LimitParaDto>
            //    {
            //        limitParaDto1, limitParaDto2, limitParaDto3
            //    };
            //    //通道1的振动参数配置
            //    VibChannelParaDto vibChannalParaDto = new VibChannelParaDto()
            //    {
            //        ChNo = 1,
            //        SpeedNo = 0,
            //        SensType = 0,
            //        CnstCurSrcState = 0,
            //        SensCoef = 10,
            //        DevId = 1,
            //        VibParaList = vibParaDtos,
            //        LimitParaList = limitParaDtos
            //    };
            //    res.VibChannelList.Add(vibChannalParaDto);

            //    TriggerLimitParaDto triggerLimitParaDto = new TriggerLimitParaDto()
            //    {
            //        Channels = new List<int> { 1 },
            //        AccLimit = 0,
            //        VerLimit = 0,
            //        RpmLimit = 0,
            //        ShockLimit = 0,
            //    };

            //    //TriggerParaDto triggerParaDto = new TriggerParaDto()
            //    //{
            //    //    TriggerGroup = 1,
            //    //    Freq = 20000,
            //    //    Length = 4096,
            //    //    TriggerType = DasTriggerTypeEnum.ACC,
            //    //    TriggerLimitList = new List<TriggerLimitParaDto> { triggerLimitParaDto }
            //    //};
            //    //res.TriggerList.Add(triggerParaDto);

            //    //OutpuChannelPara outpuChannelPara1 = new OutpuChannelPara()
            //    //{
            //    //    ChNo = 1,
            //    //    DevId = 0,
            //    //    Limit = 0,
            //    //};
            //    //OutpuChannelPara outpuChannelPara2 = new OutpuChannelPara()
            //    //{
            //    //    ChNo = 2,
            //    //    DevId = 0,
            //    //    Limit = 0,
            //    //};
            //    //List<OutpuChannelPara> outpuChannelParas = new List<OutpuChannelPara>()
            //    //{
            //    //    outpuChannelPara1,
            //    //    outpuChannelPara2
            //    //};
            //    //res.OutputChannelList = outpuChannelParas;

            //    string jsonOutput = JsonConvert.SerializeObject(res, Formatting.Indented);
            //    Console.WriteLine(jsonOutput);
            //    ResPonsePayload = res;
            //});
            #endregion

            #region 数据库获取真实数据
            await Task.Run(async () =>
            {
                isReplay = true;
                CollectParaDto res = new CollectParaDto()
                {
                    //振动
                    VibChannelList = await _collectParaAppService.GetByVibChannelListMqttAsync(SN)
                };
                string jsonOutput = JsonConvert.SerializeObject(res, Formatting.Indented);
                Console.WriteLine(jsonOutput);
                ResPonsePayload = res;
            });
            #endregion
        }
    }
}
